package com.lemobar.pay.enums;

import lombok.Getter;

/**
 * 支付宝交易状态枚举.
 * https://opendocs.alipay.com/open/02ekfq?scene=23
 * trade_status
 */
@Getter
public enum AliPayTradeStatusEnum {

    /*
    交易状态：
        WAIT_BUYER_PAY（交易创建，等待买家付款）、
        TRADE_CLOSED（未付款交易超时关闭，或支付完成后全额退款）、
        TRADE_SUCCESS（交易支付成功）、
        TRADE_FINISHED（交易结束，不可退款）
     */

    /** 交易创建，等待买家付款。 */
    WAIT_BUYER_PAY("交易创建，等待买家付款"),

    /**
     * <pre>
     * 在指定时间段内未支付时关闭的交易；
     * 在交易完成全额退款成功时关闭的交易。
     * </pre>
     */
    TRADE_CLOSED("未付款交易超时关闭，或支付完成后全额退款"),

    /** 交易成功，且可对该交易做操作，如：多级分润、退款等。 */
    TRADE_SUCCESS("交易支付成功"),


    /** 交易成功且结束，即不可再做任何操作。 */
    TRADE_FINISHED("交易结束，不可退款"),

    ;

    private String desc;

    AliPayTradeStatusEnum(String desc) {
        this.desc = desc;
    }

    public static AliPayTradeStatusEnum findByName(String name) {
        for (AliPayTradeStatusEnum statusEnum : AliPayTradeStatusEnum.values()) {
            if (name.toLowerCase().equals(statusEnum.name().toLowerCase())) {
                return statusEnum;
            }
        }
        throw new RuntimeException("错误的支付宝支付状态 " + name);
    }
}
